package com.dy.design_pattern_study.template_method.dome1;

/**
 * @CreateBy zhangdingyi
 * @Date 2023-03-27
 * @Content 测试方法
 * 模板方法模式，定义一个操作中的算法的骨架，而将一些步骤延迟到子类中。
 * 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
 * 就是说父类把重复的算法代码整理起来，子类仅需要对不同的代码进行修改即可
 *
 * 简单的说，模板方法实质就是把相同的内容整合起来，把不同的内容交给子类处理
 * 那么这样就可以极大的减少代码冗余，实现代码复用
 * 优点
 * 模板方法模式是通过把不变行为搬移到超类，去除子类中的重复代码来体现它的优势。
 * 我们会遇到由一系列步骤构成的过程需要执行。这个过程从高层次上看是相同的，但有些步骤的实现可能不同
 *
 * 当不变的和可变的行为在方法的子类实现中混合在一起的时候，不变的行为就会在子类中重复出现。
 * 我们通过模板方法模式把这些行为搬移到单一的地方，这样就帮助子类摆脱重复的不变行为的纠缠。
 *
 */
public class TestMain {

    public static void main(String[] args) {
        //这里可以直接调用对应的类方法
        System.out.println("A 同学回答问题");
        TestPaper studentA = new TestPaperA();
        studentA.TestQuestion1();
        studentA.TestQuestion2();
        studentA.TestQuestion3();

        System.out.println("B 同学回答问题");
        TestPaper studentB = new TestPaperB();
        studentB.TestQuestion1();
        studentB.TestQuestion2();
        studentB.TestQuestion3();

    }
}
